#ifndef __GRAPH_EDGE_H_INCLUDE__
#define __GRAPH_EDGE_H_INCLUDE__

class GraphEdge
{
protected:
	int m_iSrc;
	int m_iDest;
	double m_Cost;

public:
	GraphEdge(int source, int dest, double cost):m_Cost(cost), m_iSrc(source), m_iDest(dest){}
	GraphEdge(int source, int dest):m_Cost(1.0), m_iSrc(source), m_iDest(dest){}
	virtual ~GraphEdge(){};

	int getSource()const{
		return m_iSrc;
	}

	void setSource(int src){
		m_iSrc = src;
	}

	int getDestination()const{
		return m_iDest;
	}
	void setDestination(int dest){
		m_iDest = dest;
	}

	double getCost()const{
		return m_Cost;
	}
	void setCost(double cost){
		m_Cost = cost;
	}

	bool operator==(const GraphEdge& rhs){
		return rhs.m_iSrc == this->m_iSrc &&
			   rhs.m_iDest   == this->m_iDest   &&
			   rhs.m_Cost == this->m_Cost;
	}

	  bool operator!=(const GraphEdge& rhs)
	  {
		return !(*this == rhs);
	  }
};

#endif